package experimentos;

import java.io.FileNotFoundException;

import problema.Problema;
import pso.base.AlgoritmoPSO;
import pso.base.EquacaoVelocidade;
import pso.base.Inicializacao;
import pso.base.Topologia;
import pso.inicializacao.InicializacaoNormalizada;
import pso.operador.equacoes.EquacaoComC1C2Iguais;
import pso.operador.topologia.Global;
import rn.TrainningProblem;
import util.Logger;


public class ExperimentoPSO {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Inicializacao inicializacao = new InicializacaoNormalizada();
		Problema problema = new TrainningProblem();
		Topologia topologia = new Global();
		EquacaoVelocidade equacao = new EquacaoComC1C2Iguais();
		
		Logger logger = new Logger("resultados/ExperPSO", 30, 50);
		
		double tempoMedio = 0;
		
		for(int i=0; i<30; i++){
			
			AlgoritmoPSO algoritmo = new AlgoritmoPSO(20, inicializacao, problema, 
					topologia, equacao);
			
			double tempoInicial = System.currentTimeMillis();
			algoritmo.execute();
			tempoMedio += (System.currentTimeMillis()-tempoInicial);
			
			logger.definirValores(i, algoritmo.getValoresPorInteracao());
			
			System.out.println(i + " - FIM");
		}

		try {
			logger.imprimirResultado();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println("Tempo Medio = " + (tempoMedio/30));
	}

}
